package com.essential.program;

/*
##for循环
    for循环的功能非常强大，它使用计数器实现循环。for循环会先初始化计数器，然后，在每次循环前检测循环条件，在每次循环后更新计数器。计数器变量通常命名为i。
    在for循环执行前，会先执行初始化语句int i=1，它定义了计数器变量i并赋初始值为1，然后，循环前先检查循环条件i<=100，循环后自动执行i++，因此，和while循环相比，for循环把更新计数器的代码统一放到了一起。在for循环的循环体内部，不需要去更新变量i。
    因此，for循环的用法是：

    for (初始条件; 循环检测条件; 循环后更新计数器) {
        // 执行语句
    }
     注意for循环的初始化计数器总是会被执行，并且for循环也可能循环0次。
    使用for循环时，千万不要在循环体内修改计数器！在循环体中修改计数器常常导致莫名其妙的逻辑错误。
    在for循环中，不要修改计数器的值。计数器的初始化、判断条件、每次循环后的更新条件统一放到for()语句中可以一目了然。
    使用for循环时，计数器变量i要尽量定义在for循环中

##for each循环
    Java还提供了另一种for each循环，它可以更简单地遍历数组
    和for循环相比，for each循环的变量n不再是计数器，而是直接对应到数组的每个元素。for each循环的写法也更简洁。但是，for each循环无法指定遍历顺序，也无法获取数组的索引。
    除了数组外，for each循环能够遍历所有“可迭代”的数据类型，包括后面会介绍的List、Map等。

##小结
    for循环通过计数器可以实现复杂循环；
    for each循环可以直接遍历数组的每个元素；
    最佳实践：计数器变量定义在for循环内部，循环体内部不修改计数器；
 */

public class For {
    public static void main(String[] args) {

        //1到100的和
        int sum = 0;
        for (int i=1; i<=100; i++) {
            sum = sum + i;
        }
        System.out.println(sum);

        //for each
        //遍历数组
        int[] ns = { 1, 4, 9, 16, 25 };
        for (int n : ns) {
            System.out.println(n);
        }
    }
}
